package gobelinmaker.client;

import com.sun.scenario.scenegraph.SGGroup;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;

/**
 * Fonalszakasz alaposztálya.
 *
 * @author imruf84
 */
public class WoolSegmentComponent extends SGGroup {

    /**
     * Fonal objektum.
     */
    private final WoolComponent wc;
    /**
     * Öltés objektum.
     */
    private final StitchComponent sc;
    /**
     * Kontúr objektum.
     */
    protected WoolContourSegment wcs;
    /**
     * Kitöltés objektum.
     */
    protected WoolFillSegment wfs;
    /**
     * Honnan.
     */
    private Point2D from;
    /**
     * Hová.
     */
    private Point2D to;

    /**
     * Konstruktor.
     *
     * @param wc fonal
     * @param sc öltés
     * @param from honnan
     * @param to hová
     */
    public WoolSegmentComponent(WoolComponent wc, StitchComponent sc, Point2D from, Point2D to) {
        this.wc = wc;
        this.sc = sc;
        this.from = from;
        this.to = to;
    }

    /**
     * Kontúrobjektum lekérdezése.
     *
     * @return kontúrobjektum
     */
    public WoolContourSegment getContourShape() {
        return this.wcs;
    }

    /**
     * Kitöltésobjektum lekérdezése.
     *
     * @return kitöltésobjektum
     */
    public WoolFillSegment getFillShape() {
        return this.wfs;
    }

    /**
     * Szín frissítése.
     */
    public void updateColor() {
        this.wfs.setFillPaint(this.wc.getWool().getColor().getColor());
        this.wcs.setFillPaint(HoleComponent.getContrastColor(this.wc.getWool().getColor().getColor()));
    }

    /**
     * Öltés lekérdezése.
     *
     * @return öltés
     */
    public StitchComponent getStitchComponent() {
        return this.sc;
    }

    /**
     * Honnan lekérdezése.
     *
     * @return honnan
     */
    public Point2D getFrom() {
        return this.from;
    }

    /**
     * Honnan megadása.
     *
     * @param from honnan
     */
    public void setFrom(Point2D from) {
        this.from = from;
    }

    /**
     * Hova lekérdezése.
     *
     * @return hova
     */
    public Point2D getTo() {
        return this.to;
    }

    /**
     * Hova megadása.
     *
     * @param to hova
     */
    public void setTo(Point2D to) {
        this.to = to;
    }

    /**
     * Irány frissítése.
     */
    public void updatePositions() {
        this.wcs.setShape(this.wcs.getBasicStroke().createStrokedShape(new Line2D.Double(this.from, this.to)));
        this.wfs.setShape(this.wfs.getBasicStroke().createStrokedShape(new Line2D.Double(this.from, this.to)));
    }
}
